package middleware

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// ConfigureCORS 配置 CORS 中间件
func ConfigureCORS(router *gin.Engine) {
	// 使用 Gin 的 CORS 中间件
	corsMiddleware := func(c *gin.Context) {
		// 设置允许的源，这里使用 * 表示允许所有源
		c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
		// 设置允许的方法
		c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
		// 设置允许的头信息
		c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Accept, Authorization")
		// 允许携带凭证（cookies）
		c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")

		// 如果是 OPTIONS 请求，则直接返回，不继续执行后续处理函数
		if c.Request.Method == "OPTIONS" {
			c.AbortWithStatus(http.StatusNoContent)
			return
		}

		// 继续执行后续的处理函数
		c.Next()
	}

	// 全局中间件，应用于所有路由
	router.Use(corsMiddleware)
}
